Technical Q&A QA1297
Don't forget to cancel your Rendezvous resolve


Q: Rendezvous サービスを Resolve してその IP アドレスを取得したのち Resolve 操作を取り消す必要はあるでしょうか。

A: はい、あります。Resolve 操作を実行したままにすると、ローカルコンピュータの Rendezvous キャッシュの DNS リソースレコードを最新の状態に保つために、数分ごとにクエリパケットが送信され、ネットワークに不要な負荷がかかるからです。接続が必要になったときにのみサービスを Resolve し、接続が正しく確立されたら直ちにその Resolve を取り消す必要があります。Mac OS X 10.3 以降では、Resolve を取り消さなかった場合には、次のメッセージがシステムログ(/var/log/system.log)に現れます。



リスト 1. system.log メッセージ

Oct 11 12:57:54 admin mDNSResponder[266]:37755: DNSServiceResolver
(Ice Cube._http._tcp.local.) has remained active for over two minutes.
This places considerable burden on the network.



まれに、TXT レコードの変更を監視するために Resolve を実行したままにする必要のあるアプリケーションも存在します。たとえば iChat は、Rendezvous TXT レコードに格納されているチャット仲間のステータスメッセージの変更を継続的に監視します。アプリケーションでこの種の機能を必要とするときは、CFNetServices または NSNetServices の標準 Resolve メソッドの使用を避けるべきです。代わりに、Mac OS X 10.3 で導入された「/usr/include/dns_sd.h」にある新しい DNSServiceDiscovery API を使用するべきです。関数 DNSServiceQueryRecord を使用すれば、クエリの対象を TXT レコードに限定できます。SRV、TXT、アドレスの各レコードを対象とするクエリを送信する通常の Resolve 操作を用いるよりも効果的です。


[2003 年 10 月 15 日]